﻿using System;
using System.ComponentModel;
using System.Runtime.InteropServices;

namespace Teigha.Core
{
	public class OdGiConveyorGeometry_Internal : OdGiConveyorGeometry, IDisposable
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public OdGiConveyorGeometry_Internal(IntPtr cPtr, bool cMemoryOwn)
		{
			this.swigCMemOwn = cMemoryOwn;
			this.swigCPtr = new HandleRef(this, cPtr);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public static HandleRef getCPtr(OdGiConveyorGeometry_Internal obj)
		{
			if (obj != null)
			{
				return obj.swigCPtr;
			}
			return new HandleRef(null, IntPtr.Zero);
		}

		~OdGiConveyorGeometry_Internal()
		{
			this.Dispose();
		}

		public virtual void Dispose()
		{
			if (this.swigCPtr.Handle != IntPtr.Zero)
			{
				if (this.swigCMemOwn)
				{
					lock (this.locker)
					{
						if (this.swigCPtr.Handle != IntPtr.Zero && this.swigCMemOwn)
						{
							this.swigCMemOwn = false;
							GlobalsPINVOKE.delete_OdGiConveyorGeometry_Internal(this.swigCPtr);
						}
					}
					this.swigCMemOwn = false;
				}
				this.swigCPtr = new HandleRef(null, IntPtr.Zero);
			}
			GC.SuppressFinalize(this);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		HandleRef OdGiConveyorGeometry.GetCPtr()
		{
			return new HandleRef(this, GlobalsPINVOKE.OdGiConveyorGeometry_Internal_OdGiConveyorGeometry_GetCPtr(this.swigCPtr.Handle));
		}

		public virtual void plineProc(OdGiPolyline polyline, OdGeMatrix3d pXfm, uint fromIndex, uint numSegs)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_plineProc__SWIG_0(this.swigCPtr, OdGiPolyline.getCPtr(polyline), OdGeMatrix3d.getCPtr(pXfm), fromIndex, numSegs);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void plineProc(OdGiPolyline polyline, OdGeMatrix3d pXfm, uint fromIndex)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_plineProc__SWIG_1(this.swigCPtr, OdGiPolyline.getCPtr(polyline), OdGeMatrix3d.getCPtr(pXfm), fromIndex);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void plineProc(OdGiPolyline polyline, OdGeMatrix3d pXfm)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_plineProc__SWIG_2(this.swigCPtr, OdGiPolyline.getCPtr(polyline), OdGeMatrix3d.getCPtr(pXfm));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void plineProc(OdGiPolyline polyline)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_plineProc__SWIG_3(this.swigCPtr, OdGiPolyline.getCPtr(polyline));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void polylineProc(OdGePoint3d[] numPoints, OdGeVector3d pNormal, OdGeVector3d pExtrusion, IntPtr baseSubEntMarker)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polylineProc(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal), OdGeVector3d.getCPtr(pExtrusion), baseSubEntMarker);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polygonProc(OdGePoint3d[] numPoints, OdGeVector3d pNormal, OdGeVector3d pExtrusion)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polygonProc__SWIG_0(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal), OdGeVector3d.getCPtr(pExtrusion));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polygonProc(OdGePoint3d[] numPoints, OdGeVector3d pNormal)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polygonProc__SWIG_1(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polygonProc(OdGePoint3d[] numPoints)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polygonProc__SWIG_2(this.swigCPtr, intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void xlineProc(OdGePoint3d firstPoint, OdGePoint3d secondPoint)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_xlineProc(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void rayProc(OdGePoint3d basePoint, OdGePoint3d throughPoint)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_rayProc(this.swigCPtr, OdGePoint3d.getCPtr(basePoint), OdGePoint3d.getCPtr(throughPoint));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void meshProc(MeshData numRows)
		{
			IntPtr intPtr = Helpers.MarshalMeshData(numRows);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_meshProc(this.swigCPtr, intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void shellProc(ShellData numVertices)
		{
			IntPtr intPtr = Helpers.MarshalShellData(numVertices);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_shellProc(this.swigCPtr, intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void circleProc(OdGePoint3d center, double radius, OdGeVector3d normal, OdGeVector3d pExtrusion)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_circleProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(center), radius, OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(pExtrusion));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void circleProc(OdGePoint3d firstPoint, OdGePoint3d secondPoint, OdGePoint3d thirdPoint, OdGeVector3d pExtrusion)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_circleProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint), OdGePoint3d.getCPtr(thirdPoint), OdGeVector3d.getCPtr(pExtrusion));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void circularArcProc(OdGePoint3d center, double radius, OdGeVector3d normal, OdGeVector3d startVector, double sweepAngle, OdGiArcType arcType, OdGeVector3d pExtrusion)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_circularArcProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(center), radius, OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(startVector), sweepAngle, (int)arcType, OdGeVector3d.getCPtr(pExtrusion));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void circularArcProc(OdGePoint3d firstPoint, OdGePoint3d secondPoint, OdGePoint3d thirdPoint, OdGiArcType arcType, OdGeVector3d pExtrusion)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_circularArcProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint), OdGePoint3d.getCPtr(thirdPoint), (int)arcType, OdGeVector3d.getCPtr(pExtrusion));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void ellipArcProc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointOverrides, OdGiArcType arcType, OdGeVector3d pExtrusion)
		{
			IntPtr intPtr = Helpers.MarshalPointPair(endPointOverrides);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_ellipArcProc__SWIG_0(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr, (int)arcType, OdGeVector3d.getCPtr(pExtrusion));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				if (intPtr != IntPtr.Zero)
				{
					Marshal.FreeCoTaskMem(intPtr);
				}
			}
		}

		public virtual void ellipArcProc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointOverrides, OdGiArcType arcType)
		{
			IntPtr intPtr = Helpers.MarshalPointPair(endPointOverrides);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_ellipArcProc__SWIG_1(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr, (int)arcType);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				if (intPtr != IntPtr.Zero)
				{
					Marshal.FreeCoTaskMem(intPtr);
				}
			}
		}

		public virtual void ellipArcProc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointOverrides)
		{
			IntPtr intPtr = Helpers.MarshalPointPair(endPointOverrides);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_ellipArcProc__SWIG_2(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				if (intPtr != IntPtr.Zero)
				{
					Marshal.FreeCoTaskMem(intPtr);
				}
			}
		}

		public virtual void ellipArcProc(OdGeEllipArc3d ellipArc)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_ellipArcProc__SWIG_3(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void nurbsProc(OdGeNurbCurve3d nurbsCurve)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_nurbsProc(this.swigCPtr, OdGeNurbCurve3d.getCPtr(nurbsCurve));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void textProc(OdGePoint3d position, OdGeVector3d direction, OdGeVector3d upVector, string msg, bool raw, OdGiTextStyle pTextStyle, OdGeVector3d pExtrusion)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_textProc(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(direction), OdGeVector3d.getCPtr(upVector), msg, raw, OdGiTextStyle.getCPtr(pTextStyle), OdGeVector3d.getCPtr(pExtrusion));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void textProc2(OdGePoint3d position, OdGeVector3d direction, OdGeVector3d upVector, string msg, bool raw, OdGiTextStyle pTextStyle, OdGeVector3d pExtrusion, OdGeExtents3d arg7)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_textProc2(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(direction), OdGeVector3d.getCPtr(upVector), msg, raw, OdGiTextStyle.getCPtr(pTextStyle), OdGeVector3d.getCPtr(pExtrusion), OdGeExtents3d.getCPtr(arg7));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void shapeProc(OdGePoint3d position, OdGeVector3d direction, OdGeVector3d upVector, int shapeNumber, OdGiTextStyle pTextStyle, OdGeVector3d pExtrusion)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_shapeProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(direction), OdGeVector3d.getCPtr(upVector), shapeNumber, OdGiTextStyle.getCPtr(pTextStyle), OdGeVector3d.getCPtr(pExtrusion));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void shapeProc(OdGePoint3d position, OdGeVector3d direction, OdGeVector3d upVector, int shapeNumber, OdGiTextStyle pTextStyle)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_shapeProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(direction), OdGeVector3d.getCPtr(upVector), shapeNumber, OdGiTextStyle.getCPtr(pTextStyle));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency, double brightness, double contrast, double fade)
		{
			IntPtr intPtr = Helpers.MarshalPoint2dArray(uvBoundary);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_rasterImageProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency, brightness, contrast, fade);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency, double brightness, double contrast)
		{
			IntPtr intPtr = Helpers.MarshalPoint2dArray(uvBoundary);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_rasterImageProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency, brightness, contrast);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency, double brightness)
		{
			IntPtr intPtr = Helpers.MarshalPoint2dArray(uvBoundary);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_rasterImageProc__SWIG_2(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency, brightness);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency)
		{
			IntPtr intPtr = Helpers.MarshalPoint2dArray(uvBoundary);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_rasterImageProc__SWIG_3(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary)
		{
			IntPtr intPtr = Helpers.MarshalPoint2dArray(uvBoundary);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_rasterImageProc__SWIG_4(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void metafileProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiMetafile pMetafile, bool dcAligned, bool allowClipping)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_metafileProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiMetafile.getCPtr(pMetafile), dcAligned, allowClipping);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void metafileProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiMetafile pMetafile, bool dcAligned)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_metafileProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiMetafile.getCPtr(pMetafile), dcAligned);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void metafileProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiMetafile pMetafile)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_metafileProc__SWIG_2(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiMetafile.getCPtr(pMetafile));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void xlineProc2(OdGePoint3d basePoint, OdGeVector3d direction)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_xlineProc2(this.swigCPtr, OdGePoint3d.getCPtr(basePoint), OdGeVector3d.getCPtr(direction));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void rayProc2(OdGePoint3d basePoint, OdGeVector3d direction)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_rayProc2(this.swigCPtr, OdGePoint3d.getCPtr(basePoint), OdGeVector3d.getCPtr(direction));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setExtentsProc(OdGePoint3d arg0, bool arg1)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_setExtentsProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(arg0), arg1);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setExtentsProc(OdGePoint3d arg0)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_setExtentsProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(arg0));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual int ttfCharProcFlags()
		{
			int result = GlobalsPINVOKE.OdGiConveyorGeometry_Internal_ttfCharProcFlags(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual bool ttfCharProc(char arg0, OdGePoint3d arg1, OdGeBoundBlock3d arg2)
		{
			bool result = GlobalsPINVOKE.OdGiConveyorGeometry_Internal_ttfCharProc(this.swigCPtr, arg0, OdGePoint3d.getCPtr(arg1), OdGeBoundBlock3d.getCPtr(arg2));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual void ttfPolyDrawProc(OdGePoint3d[] numVertices, int[] faceListSize, byte[] arg2, FaceData pFaceData)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numVertices);
			IntPtr intPtr2 = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_ttfPolyDrawProc__SWIG_0(this.swigCPtr, intPtr, intPtr2, Teigha.Core.Helpers.MarshalbyteFixedArray(arg2), pFaceData);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
				Marshal.FreeCoTaskMem(intPtr2);
			}
		}

		public virtual void ttfPolyDrawProc(OdGePoint3d[] numVertices, int[] faceListSize, byte[] arg2)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numVertices);
			IntPtr intPtr2 = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_ttfPolyDrawProc__SWIG_1(this.swigCPtr, intPtr, intPtr2, Teigha.Core.Helpers.MarshalbyteFixedArray(arg2));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
				Marshal.FreeCoTaskMem(intPtr2);
			}
		}

		public virtual void conveyorBoundaryInfoProc(OdGeBoundBlock3d arg0, out uint arg1)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_conveyorBoundaryInfoProc(this.swigCPtr, OdGeBoundBlock3d.getCPtr(arg0), out arg1);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions, IntPtr[] pSubEntMarkers)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polypointProc2__SWIG_0(this.swigCPtr, pContext.GetCPtr(), intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals), OdGeVector3d.getCPtr(pExtrusions), Helpers.MarshalIntPtrFixedArray(pSubEntMarkers));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polypointProc2__SWIG_1(this.swigCPtr, pContext.GetCPtr(), intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals), OdGeVector3d.getCPtr(pExtrusions));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polypointProc2__SWIG_2(this.swigCPtr, pContext.GetCPtr(), intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polypointProc2__SWIG_3(this.swigCPtr, pContext.GetCPtr(), intPtr, OdCmEntityColor.getCPtr(pColors));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polypointProc2__SWIG_4(this.swigCPtr, pContext.GetCPtr(), intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void rowOfDotsProc2(int numPoints, OdGePoint3d startPoint, OdGeVector3d dirToNextPoint)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_rowOfDotsProc2(this.swigCPtr, numPoints, OdGePoint3d.getCPtr(startPoint), OdGeVector3d.getCPtr(dirToNextPoint));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions, IntPtr[] pSubEntMarkers)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polypointProc__SWIG_0(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals), OdGeVector3d.getCPtr(pExtrusions), Helpers.MarshalIntPtrFixedArray(pSubEntMarkers));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polypointProc__SWIG_1(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals), OdGeVector3d.getCPtr(pExtrusions));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polypointProc__SWIG_2(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiConveyorGeometry_Internal_polypointProc__SWIG_3(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void rowOfDotsProc(int numPoints, OdGePoint3d startPoint, OdGeVector3d dirToNextPoint)
		{
			GlobalsPINVOKE.OdGiConveyorGeometry_Internal_rowOfDotsProc(this.swigCPtr, numPoints, OdGePoint3d.getCPtr(startPoint), OdGeVector3d.getCPtr(dirToNextPoint));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		private object locker = new object();

		private HandleRef swigCPtr;

		protected bool swigCMemOwn;

		public enum ETtfCharProcFlags
		{
			kTtfCharProcEnable = 1,
			kTtfCharProcBoundBlock
		}

		public enum EConveyorBoundaryInfoFlags
		{
			kBoundaryProcXform = 1,
			kBoundaryProcXformNonUni,
			kBoundaryProcProjection = 4,
			kBoundaryProcClip = 8,
			kBoundaryProcClipFull = 16
		}
	}
}
